'''
意外地有一点难，不过在看了之前大三同学的提交之后，终于用python提交通过了。
反正用C的办法是行不通了。。
首先，易知在边长和能对3整除的情况下，只要凑出其中两条边，就可以保证是等边三角形了。
所以我最开始是写的
dfs(a,b,i):
  dfs(a+pi, b, i+1)
  dfs(a, b+pi, i+1)
  dfs(a, b, i+1)
也就是3的n次方的时间复杂度。要是C也就过了！但是python不行，大大的不行，贼超时。。
显然想要同时凑出2个边的话太慢了。很难完成。
所以我们可以一个边一个边的凑。下面这个是用了yield的哈哈哈。我估计也不太好看懂。一会儿补个普通版的。
def dfs(a, i):
    if f or a > sm: return
    if a == sm: yield
    if i == n: return
    if p_[i]:
        p_[i] = False
        yield from dfs(a + p[i], i + 1)
        p_[i] = True
    yield from dfs(a, i + 1)

n = int(input())
p = [*map(int, input().split())]
p_ = [True for i in range(n)]
sm = sum(p)
if sm % 3: print("no")
else:
    sm//=3
    st = []
    f = False
    for i in dfs(0, 0):
        for j in dfs(0, 0): f = True
    if f:
        print("yes")
    else:
        print("no")
'''
def dfs(a, i, g):
    global f
    if f or a > sm: return
    if g == 2: f = True
    if a == sm: dfs(0, 0, g + 1)
    if i == n: return
    if p_[i]:
        p_[i] = False
        dfs(a + p[i], i + 1, g)
        p_[i] = True
    dfs(a, i + 1, g)

n = int(input())
p = [*map(int, input().split())]
p_ = [True for i in range(n)]
sm = sum(p)
if sm % 3: print("no")
else:
    sm//=3
    st = []
    f = False
    # 不用yield其实写起来更简单更好理解233333
    # 就是每次凑出一个边，然后在这个基础上继续凑下一个边
    # 不行的话就重新凑。
    dfs(0, 0, 0)
    if f:
        print("yes")
    else:
        print("no")
# -------------------------------------------------------------------------------

# 比赛环境为python3.8.6版本自带的IDLE，最好早点熟悉一下。。这个东西的提示时有时无

# 菜单栏最右边的Help的Python Docs 比赛时候也可以看，不过建议还是提前多了解了解，

# 比赛的时候至少知道在文档找什么能用的上。

# IDLE是下载Python时自带的，在按住win+s搜索IDLE就能搜到了。

# 然后点左上角的File可以创建新文件，然后按F5可以运行。
